package com.dolphin.business.common.utils;

import java.io.StringReader;

import antlr.RecognitionException;
import antlr.TokenStreamException;

import com.dolphin.business.exception.BaseException;
import com.sdicons.json.mapper.JSONMapper;
import com.sdicons.json.mapper.MapperException;
import com.sdicons.json.model.JSONValue;
import com.sdicons.json.parser.JSONParser;

/**
 * json工具类
 * @author gyli
 *
 */
public class JSONUtil {

	/**
	 * 将类转化为json串的方法，传入一个实体，将之转换为json串
	 * @param object
	 * @return
	 */
	public static String object2String(Object object) {
		
		try {
			return JSONMapper.toJSON(object).render(false);
		} catch (MapperException e) {
			e.printStackTrace();
			throw new BaseException("对象转化为json数据时出错，可能是对象类型不匹配");
		}
		
	}
	
	/**
	 * 将json串转化为对象的方法，传入json串，和类的映射，将json转化为对应的对象
	 * @param jsonStr
	 * @param destClass
	 * @return
	 */
	public static Object string2Object(String jsonStr, Class<?> destClass) {
		try {
			JSONValue value = new JSONParser(new StringReader(jsonStr)).nextValue();
			return JSONMapper.toJava(value, destClass);
		} catch (Exception e) {
			e.printStackTrace();
			throw new BaseException("Json数据转换为对象时出错，可以是对象类型不匹配");
		}
	}
	
}
